package com.example.cslp.controller;

import com.example.cslp.exception.handler.ServiceException;
import com.example.cslp.pojo.DTO.CourseDTO;
import com.example.cslp.pojo.VO.CourseListItemVO;
import com.example.cslp.service.ICourseService;
import com.example.cslp.web.JsonResult;
import com.example.cslp.web.ServiceCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author ming
 */

@Slf4j
@RestController
@RequestMapping("/courses")
public class CourseController {

    @Autowired
    private ICourseService courseService;

    /**
     * 更改课程的审核状态
     * @param courseDTO 课程实体
     * @return
     */
    @PostMapping("/audit")
    public JsonResult audit(@RequestBody CourseDTO courseDTO){
        String msg="修改课程审核状态成功！";
        if(courseDTO.getIsAudited()>=0 &&courseDTO.getIsAudited()<=2){
            courseService.audit(courseDTO);
        }else {
            String failMsg="传入的课程状态为非法参数";
            throw new ServiceException(ServiceCode.ERR_UNKNOWN,failMsg);
        }
        return JsonResult.ok(msg);
    }

    /**
     * 查询暂未审核的课程列表
     * @return 返回暂未审核的课程列表
     */
    @GetMapping("/list/audit_not")
    public JsonResult  notAudited(){
        String mgs="获取暂未审核的课程列表成功!";
        List<CourseListItemVO>  list=courseService.notAudited();
        return JsonResult.ok(list,mgs);
    }

    /**
     * 查询审核通过的课程列表
     * @return 审核通过的课程列表
     */
    @GetMapping("/list/audit")
    public JsonResult audited(){
        String mgs="获取审核通过的课程列表成功!";
        List<CourseListItemVO>  list=courseService.audited();
        return JsonResult.ok(list,mgs);
    }

    /**
     * 查询审核未通过的课程列表
     * @return 审核未通过的课程列表
     */
    @GetMapping("/list/audit_fail")
    public JsonResult auditFailed(){
        String mgs="获取审核未通过的课程列表成功!";
        List<CourseListItemVO   >  list=courseService.auditFailed();
        return JsonResult.ok(list,mgs);
    }
    @GetMapping("/list")
    public JsonResult list(){
        String mgs="获取课程列表成功!";
        List<CourseListItemVO>  list=courseService.list();
        return JsonResult.ok(list,mgs);
    }
    //这个客户端要用别删
    /**
     * 根据课程名称查询课程
     * @param name 课程名称
     * @return
     */
    @GetMapping("/query/{name}")
    public JsonResult query(@PathVariable String name){
        List<CourseListItemVO> queryList =courseService.query(name);
        String msg="根据课程名称查询成功!";
        return JsonResult.ok(queryList,msg);
    }

}
